package com.jiangjiang.eshop.wms.service;

import com.jiangjiang.eshop.wms.dto.PurchaseInputOrderDTO;
import com.jiangjiang.eshop.wms.dto.ReturnGoodsInputOrderDTO;
import com.jiangjiang.eshop.wms.dto.SaleDeliveryOrderDTO;
import com.jiangjiang.eshop.schedule.dto.SaleDeliveryScheduleResult;

/**
 * @ClassName WmsFacadeService
 * @Description WMS对外接口
 * @Author jhw
 * @Date 2021/4/14 21:44
 * @Version 1.0
 **/
public interface WmsFacadeService {

    /**
     * 创建采购入库单
     * @param purchaseInputOrderDTO 采购入库单 DTO
     * @return 处理结果
     */
    Boolean createPurchaseInputOrder(PurchaseInputOrderDTO purchaseInputOrderDTO);

    /**
     * 创建销售出库单
     * @param saleDeliveryOrderDTO 销售出库单DTO
     * @return 处理结果
     */
    Boolean createSaleDeliveryOrder(SaleDeliveryOrderDTO saleDeliveryOrderDTO);

    /**
     * 创建退货入库单
     * @param returnGoodsInputOrderDTO 退货入库单DTO
     * @return 处理结果
     */
    Boolean createReturnGoodsInputOrder(ReturnGoodsInputOrderDTO returnGoodsInputOrderDTO);

    /**
     * 通知WMS中心，"提交订单"事件发生了
     * @param scheduleResult 调度结果
     * @return 处理结果
     */
    Boolean informSubmitOrderEvent(SaleDeliveryScheduleResult scheduleResult);

    /**
     * 通知WMS中心，“支付订单”事件发生了
     * @param scheduleResult 调度结果
     * @return 处理结果
     */
    Boolean informPayOrderEvent(SaleDeliveryScheduleResult scheduleResult);

    /**
     * 通知WMS中心，“取消订单”事件发生了
     * @param scheduleResult 调度结果
     * @return 处理结果
     */
    Boolean informCancelOrderEvent(SaleDeliveryScheduleResult scheduleResult);

    /**
     * 获取订单对应的物流单号
     * @param orderId 订单id
     * @return 物流单号
     */
    String getLogisticCode(Long orderId);

    /**
     * 通知wms中心，“创建采购结算单”事件发生了
     * @param purchaseInputOrderId 采购入库单id
     * @return 处理结果
     */
    Boolean informCreatePurchaseSettlementOrderEvent(Long purchaseInputOrderId);

    /**
     * 通知wms中心，“完成采购结算单”事件发生了
     * @param purchaseInputOrderId 采购入库单id
     * @return 处理结果
     */
    Boolean informFinishedPurchaseSettlementOrderEvent(Long purchaseInputOrderId);


}
